//===- CJRuntimeLowering.h - ------------------------------------*- C++ -*-===//
//
// Copyright (c) Huawei Technologies Co., Ltd. 2025. All rights reserved.
// This source file is part of the Cangjie project, licensed under Apache-2.0
// with Runtime Library Exception.
//
// See https://cangjie-lang.cn/pages/LICENSE for license information.
//
//===----------------------------------------------------------------------===//
//
// This file provides interface to "CJ Runtime Lowering" pass.
//
// This pass lowers the functions generated by the cangjie frontend to
// the related runtime.
//
//===----------------------------------------------------------------------===//

#ifndef LLVM_TRANSFORMS_SCALAR_CJ_RUNTIME_LOWERING_H
#define LLVM_TRANSFORMS_SCALAR_CJ_RUNTIME_LOWERING_H

#include "llvm/IR/PassManager.h"

namespace llvm {
class Module;

struct CJRuntimeLowering : public PassInfoMixin<CJRuntimeLowering> {
  PreservedAnalyses run(Module &M, ModuleAnalysisManager &AM) const;
};
} // namespace llvm

enum ClassType : unsigned {
  ClassPrim = 0x1 << 0,
  ClassArray = 0x1 << 1,
  ClassObject = 0x1 << 2,
  ClassValueType = 0x1 << 3,
  ClassInterface = 0x1 << 4,
};

#endif // LLVM_TRANSFORMS_SCALAR_CJ_RUNTIME_LOWERING_H
